#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

typedef int QDataType;

// 队列 先进先出
typedef struct QueueNode
{
	struct QueueNode* next;
	QDataType data;
}QueueNode;

typedef struct Queue
{
	QueueNode* head;
	QueueNode* tail;
}Queue;

// 相关接口
void QueueInit(Queue* pq);  // 初始化
void QueueDestory(Queue* pq); // 释放队列
void QueuePush(Queue* pq,QDataType x); // 队尾入数据
void QueuePop(Queue* pq);  // 队头出数据
QDataType QueueFront(Queue* pq); //  返回队头数据
QDataType QueueBack(Queue* pq); // 返回队尾数据
size_t QueueSize(Queue* pq); // 队列的数据个数
bool QueueEmpty(Queue* pq); // 队列为空，返回true otherwise 返回 false
